package com.salt.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.salt.entity.UserInfo;

import java.math.BigDecimal;
import java.util.List;

/**
 * 用户信息服务接口
 */
public interface UserInfoService extends IService<UserInfo> {
    
    /**
     * 保存或更新用户信息
     * @param userInfo 用户信息
     * @return 保存后的用户信息
     */
    UserInfo saveOrUpdateUserInfo(UserInfo userInfo);
    
    /**
     * 根据手机号查询用户信息
     * @param mobile 手机号
     * @return 用户信息
     */
    UserInfo getByMobile(String mobile);

    /**
     * 根据邀请码分页查询用户信息
     * @param page 分页参数
     * @param inviteCode 邀请码
     * @param status 状态(0-禁用,1-启用)，不传则查询所有
     * @return 分页数据
     */
    IPage<UserInfo> pageQueryByInviteCode(Page<UserInfo> page, String inviteCode, Integer status);

    /**
     * 根据邀请码查询用户信息
     * @param inviteCode 邀请码
     * @return 用户信息
     */
    List<UserInfo> getByInviteCode(String inviteCode);

    /**
     * 获取指定邀请码下的用户余额总数
     * @param inviteCode 邀请码
     * @return 余额总数
     */
    BigDecimal getTotalBalance(String inviteCode);
}